#pragma once

#include "IObject.h"
class CBrush;
class CMILMatrix;


struct IBrushSpan :
	public IObject
{
	virtual HRESULT SetBrush(const CMILMatrix * pWorldTransform, const struct XRECTF_WH * pBrushBounds, CBrush * pBrush) = 0;
	virtual XINT32 SolidColor(XUINT32 nCPUCore, XINT32 nY, XUINT32 * pPargb) = 0;
	virtual void GenerateColors(struct GENCOLORSDATA * pGCD) = 0;
	virtual HRESULT GenerateClearType(XUINT32 nCPUCore, XINT32 nX, XINT32 nY, XINT32 nCount, struct ClearTypePixel * pClearTypeScanline) = 0;
	virtual XINT32 IsZeroAlpha() = 0;
	virtual XINT32 IsOpaque() = 0;
	virtual XUINT32 GetBrushBlendAlpha() = 0;
	virtual XINT32 IsLeafBrush() = 0;
	virtual XBOOL IsLayer() = 0;
	virtual XBOOL IsSimpleLayer() = 0;
	virtual XINT32 HasClearType() = 0;
};